문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 임베디드 시스템 (문단 편집) == 특징 == * 하드웨어 지식 펌웨어를 포함하는 임베디드 시스템은 시스템 회로 및 관련 하드웨어에 대한 지식이 필수적이다. 펌웨어나 단순한 앱 프로그래밍 정도 알아서는 디렉팅 및 기획을 할수가 없다. 시스템 아키텍쳐, 아날로그 회로, 디지털 로직, 네트워크 통신, EMI/EMC, Safety, 프로토타입 제작, 메커니컬 디자인까지 알아야 한다. 즉, 하드웨어/펌웨어/소프트웨어 디자인을 모두 섭렵한 사람만이 임베디드 시스템 디자인이 가능하다. * [[프로그램 최적화]] 임베디드 시스템의 디바이스들은 절제된 리소스를 사용하므로 메모리 리크, 힙/스택 관리 등과 함께 효율적 코딩이 필요하다. 같은 동작을 하는 앱을 일반 응용 소프트웨어 개발자가 작성한 코드와 임베디드 설계자가 작성한 코드를 비교해보면 임베디드 코드가 압도적으로 간결하고 정갈한 경우가 많다. 2010년대 중반에 접어들면서 마이크로프로세서의 성능 향상과 더불어 고급 라이브러리들이 많이 공개되면서 예전과 같은 어려운 코딩의 필요성이 줄어들었다. 플래시나 SRAM등 메모리 용량이 적은 로 코스트 칩 경우 프로그램 최적화가 중요한 편이다. * 주변 디바이스와 연관된 알고리즘 마이크로프로세서에 의해 수행되는 명령은 주변 디바이스를 직접 제어하기 때문에 안전성이나 정밀도 요구 사항이 더 높다. 자동차 엔진을 컨트롤하는 [[ECU]] 마이크로프로세서의 경우 차의 연비를 높이면서 공기 오염을 최소화함과 동시에 차의 퍼포먼스를 높이기 위한 복잡한 필터링 알고리즘을 수행한다. * 실시간 처리 지원 임베디드 RTOS에서 말하는 실시간이란 빠른 실행을 의미하는 것이 아니라 어느 시간때 태스크가 실행됨을 파악할수 있음을 의미한다. Tick 타임과 Task Priority등의 태스크 스케쥴링이 특징이다. Async, 멀티 테스크/스레드, 멀티 코어 등의 Concurrent/Parallel 프로그래밍 기법이 필요하다. 1997년 화성에 착륙한 탐사선 [[마스 패스파인더]]는 착륙 후 화성의 기상 정보를 지구로 전송하는 과정에서 RTOS의 Priority Inversion 버그가 생기는 바람에 데이터들이 제 시간 안에 처리되지 못했고, Watchdog 타이머에 의해 시스템은 스스로를 리셋했다. 이후 다시 기상 정보를 수집해 지구로 보내는 과정에서 같은 일이 반복해서 발생하면서 탐사 임무를 제대로 수행하지 못한 일이 발생한 적이 있다. 이런한 태스크 우선순위 버그를 해결하기 위한 RTOS 프로그래밍 기법들이 있다. RTOS에는 무료인 freeRTOS와 유료인 Nucleus, VxWorks 등이 있다. [[Linux]] 또한 실시간 처리를 지원하고 있다. * UX 특정 목적의 사용자 인터페이스를 디자인한다. 임베디드 시스템의 유져 인터페이스는 마이크로 컨트롤러 전용의 GUI 라이브러리를 사용하는 경우 또는 리소스가 넉넉한 시스템에서는 기존 OS의 어플리케이션 GUI 라이브러리를 사용한다. * 멀티레이트(Multirate) 멀티 스트림등의 실시간 작업은 여러 개가 동시에 일어나기도 한다. 태스크 별로 slow rate과 fast rate로 수행되도록 동시에 컨트롤해야 한다. 멀티미디어를 예로 들면, 스트리밍되는 오디오 부분과 비디오 부분은 서로 rate가 다르지만, 반드시 동기화되어야 한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기